/**
 * 项目名称:
 *
 * @Author: 夏国倩
 * @Date: 2023/10/14 10:06
 * @Copyright
 */
package Reflect;
/*
怎么获取一个文件的绝对路径：以下讲解的这种方法是通用的，但前提是：文件需要在类路径下，才能用这种方式
 */
public class AbountPath {
    public static void main(String[] args) throws Exception {
        //这种方式的路径缺点：移植性差，在IDEA中默认的当前路径是project的根
        //这个代码假设离开了IDEA，换到其他位置，可能当前路径就不是project的根，这时这个路径就无效了
        //FileReader reader = new FileReader("demo/Reflect/classinfo.properties");

        //一种比较普通的路径，即使代码换位置了，这样编写仍然通用
        //注意：使用下面通用方式的前提：这个文件必须在类路径下
        //类路径：凡是在src下的都是类路径
        //src是类的根路径
        /*
        解释:
            Thread.currentThread()当前线程对象
            getContextClassLoader()是线程对象的方法，获取到当前线程的类加载器对象
            getResource()【获取资源】这是类加载器对象的方法，当前线程的类加载器默认从类的根路径下加载资源
         */
        String path=Thread.currentThread().getContextClassLoader()
                .getResource("demo/Reflect/classinfo.properties").getPath(); //这种方式获取文件绝对路径是通用的
        System.out.println(path);
    }
}
